import axios from "axios";


// 目的：配置一次路由地址，在任何需要使用的地方不需要麻烦的写全地址
//  基础域名配置
const http = axios.create({
    // 在根目录的vue.config.js中也设置了跟这个对应的，用来解决跨域，不写3000
    // 主意是
    // baseURL: "",
});

// 添加请求拦截器（Interceptors）
http.interceptors.request.use(
    function (config: any) {
        // 发送请求之前的处理
        // 处于登录状态则往请求头添加 token
        // config.headers && (config.headers.Authorization = localStorage.getItem('_token') || '')
        return config;
    },
    function (error: any) {
        // 请求错误处理
        return Promise.reject(error);
    }
);

// 添加响应拦截器
http.interceptors.response.use(
    function (response: any) {
        // 对响应数据的处理
        return response;
    },
    function (error: any) {
        // 响应错误处理
        // console.log("error", error);

        return Promise.reject(error);
    }
);

// const request = (url: string, method = "GET", data = {}, params = {}) => {
//     return new Promise((resolve, reject) => {
//         http.request({
//             url,
//             method,
//             data,
//             params
//         }).then((ok: any) => {
//             resolve(ok)
//         }).catch((err: any) => {
//             reject(err)
//         })
//     })
// }

export default {
    get(url: string, param = {}, headers = {}) {
        return http.get(url, {
            params: param,
            headers
        });
    },
    post(url: string, data = {}, headers = {}) {
        return http.post(url, data, {
            headers: Object.assign(
                {
                    // 'Content-Type': 'application/x-www-form-urlencoded'
                },
                headers
            )
        });
    },
    put(url: string, data = {}, param = {}, headers = {}) {
        return http.put(url, data, { 
            params: param,
            headers: Object.assign(
                {
                    // 'Content-Type': 'application/x-www-form-urlencoded'
                },
                headers
            )
        });
    },
}